package com.shuang.greed9;

public class Candy {
    //当前孩子如果评分高于左边和右边 要保证当前的孩子得到糖果既要比左边多又要比右边多
    //这种两边的问题 要先考虑一边 再考虑另一边
    public int candy(int[] ratings) {

        //定义要分发的糖果数组
        int[] candys = new int[ratings.length];
        //先给0的位置赋值
        candys[0] = 1;

        //先考虑 右边大于左边（从前向后遍历）
        for (int i = 1; i < ratings.length; i++) {

            //相邻右边大于左边时 右边糖果比左边多一个 否则初始化为1
            candys[i] = (ratings[i] > ratings[i - 1]) ? (candys[i - 1] + 1) : 1;

        }

        //再考虑 左边大于右边（从后向前遍历）
        for (int i = ratings.length - 1; i > 0; i--) {
            //左边大于右边
            if (ratings[i] < ratings[i - 1]) {
                //与前一次 右边大于左边时（从前向后遍历）的自己糖果比较 取大的那个 要保证既要满足大于左边又要大于右边
                candys[i - 1] = Math.max(candys[i] + 1, candys[i - 1]);
            }
        }

        //求和糖果数组 返回
        int sum = 0;
        for (int num : candys){
            sum += num;
        }

        return sum;
    }
}
